package grafica;

import personaje.*;
import java.awt.BorderLayout;
import javax.swing.*;

/**
 * GraficaMario modela a Mario y a sus diferentes movimientos. Esta conformada
 * por un JPanel (que contendra los diferentes sprites de Mario), un JLabel para
 * asignar el sprite deseado y un Mario, que es el que determina que sprite
 * tendra segun una accion determinada
 * 
 * @author Agustin Orge (LU.85538)
 * @author Victoria Martinez de la Cruz (LU.87620)
 */
public class GraficaMario {

	/** Atributos de instancia */
	private JPanel contenedorMario;
	private JLabel labelMario;
	private Mario mario;

	/**
	 * Constructor de GraficaMario
	 * 
	 * Crea, inicializa y establece los atributos.
	 * 
	 * @param m
	 *            Mario
	 */
	public GraficaMario(Mario m) {
		contenedorMario = new JPanel();
		mario = m;
		labelMario = new JLabel(m.getIcono().getRight());
		labelMario.setSize(16, 16);

		contenedorMario.setLayout(new BorderLayout());
		contenedorMario.setOpaque(false);
		contenedorMario.setBounds(192, 192, 16, 16);

		labelMario.setDoubleBuffered(true);
		contenedorMario.setDoubleBuffered(true);

		contenedorMario.add(labelMario);
		labelMario.setHorizontalAlignment(SwingConstants.CENTER);
	}
	
	// Consultas

	/**
	 * Retorna el panel que contiene a Mario
	 * 
	 * @return contenedorMario
	 */
	public JPanel getPanel() {
		return contenedorMario;
	}
	
	// Comandos

	/**
	 * Establece el sprite asociado a Mario parado mirando hacia la izquierda
	 */
	public void izquierda() {
		labelMario.setIcon(mario.getIcono().getLeft());
	}

	/**
	 * Establece el sprite asociado a Mario caminando hacia la derecha
	 */
	public void moverDerecha() {
		labelMario.setIcon(mario.getIcono().getGoRight());
	}

	/**
	 * Establece el sprite asociado a Mario parado mirando hacia la derecha
	 */
	public void derecha() {
		labelMario.setIcon(mario.getIcono().getRight());
	}

	/**
	 * Establece el sprite asociado a Mario caminando hacia la izquierda
	 */
	public void moverIzquierda() {
		labelMario.setIcon(mario.getIcono().getGoLeft());
	}

	/**
	 * Establece el sprite asociado a la muerte de Mario
	 */
	public void morir() {
		labelMario.setIcon(mario.getIcono().getDead());
	}

	/**
	 * Establece el sprite asociado a Mario saltando hacia la izquierda
	 */
	public void saltarIzquierda() {
		labelMario.setIcon(mario.getIcono().getJumpLeft());
	}

	/**
	 * Establece el sprite asociado a Mario saltando hacia la derecha
	 */
	public void saltarDerecha() {
		labelMario.setIcon(mario.getIcono().getJumpRight());
	}

}
